from src.Fiting import Fiting
from src.Pipe import Pipe


class Box:
    def __init__(self, IOS, DBC):
        self.inventory = list()
        self.IOS = IOS
        self.db = DBC
        self.path = "aam2307/st13/box.data"
        self.values = ["Труба", "Фитинг", "Назад"]
        self.actions = [self.IOS.test1, self.IOS.test1]

    def create_obj(self):
        choice = int(self.IOS.choiser(self.values, self.actions))
        if choice == len(self.actions):
            return
        if choice == 0:
            item = Pipe(self.IOS)
        if choice == 1:
            item = Fiting(self.IOS)
        else:
            return

        self.inventory.append(item)

    def show_obj(self):
        self.IOS.output("//=============СКЛАД=============\\\\")

        if len(self.inventory) != 0:
            for i in self.inventory:
                self.IOS.output(f"ID:{i.ID} = {i}")
                # i.show()
                if len(self.inventory) > 1 and i != self.inventory[-1]:
                    self.IOS.output("-----------")
        else:
            self.IOS.output("||          ничего нет           ||")

        self.IOS.output("\\\\===============================//")

    def edit_obj(self):
        self.show_obj()
        self.IOS.output("Выберите ID для редактирования")
        self.IOS.output("Или введите 0 для выхода")  # добавить try

        choice = int(self.IOS.input("Выбор:"))
        if choice != 0:
            for i in self.inventory:
                if choice == i.ID:
                    i.edit()
        else:
            self.IOS.output("Редактирование прервано")
            self.IOS.output("    ")
            return

    def dump_obj(self):
        self.db.s_dump(self.path, self.inventory)
        self.IOS.output("Сохранено")

    def load_obj(self):
        self.inventory = self.db.s_load(self.path)
        self.IOS.output("Загружено")

    def clear_obj(self):
        self.inventory.clear()
        self.IOS.output("Очищено")
